"""
LeetCode 热题

"""
# 给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
# 你可以假设每种输入只会对应一个答案，并且你不能使用两次相同的元素。

class Solution:
    def twoSum(self, nums, target):
        # 创建一个字典，用于存储已经遍历过的数字和它对应的索引
        num_dict = {}

        # 遍历数组中的每个数字
        for i, num in enumerate(nums):
            # 计算目标值与当前数字的差值
            diff = target - num

            # 如果差值存在于字典中，则找到了两个和为目标值的数字
            if diff in num_dict:
                return [num_dict[diff], i]

            # 如果不存在将当前数组和索引加入字典
            num_dict[num] = i

        # 如果没有找到两个和为目标值的数字，则返回空列表
        return []

if __name__ == '__main__':
    a = Solution()
    nums = [2, 7, 11, 15]
    target = 9
    print(a.twoSum(nums, target))